package com.bawei.mall.product.service;

import com.bawei.mall.product.domain.*;
import com.bawei.mall.product.domain.model.MallUserCollectInfo;
import com.bawei.mall.product.domain.model.MallUserFollow;
import com.bawei.mall.product.domain.model.UserFollowList;
import com.bawei.mall.product.domain.request.ProductList;
import com.bawei.mall.product.domain.request.UserCollectList;
import com.bawei.mall.user.domain.MallUserFootprint;
import com.bawei.mall.user.domain.UserList;

import java.util.List;

/**
 * @Author：张余庆
 * @Package：com.bawei.mall.product.service
 * @Project：mall_cloud
 * @name：MallProductService
 * @Date：2024/6/21 11:57
 */
public interface MallProductService {
    /**
     * 功能：查询商品品牌列表
     * @return
     */
    MallList selBrandList();

    /**
     * 功能：根据品牌id查询商品
     * @param brandId
     * @return
     */
    MallList selProduct(Integer brandId,Integer pageNum,Integer pageSize);

    /**
     * 功能：根据id查询品牌
     * @param id
     * @return
     */
    ProductBrand selBrandById(Integer id);

    /**
     * 功能：商品推荐广告查询
     * @return
     */
    MallList selGaoList();

    /**
     * 功能：商品收藏
     * @param mallUserFollow
     */
    void add(MallUserFollow mallUserFollow);

    /**
     * 功能：取消商品收藏
     * @param brandId
     */
    void delete(Integer brandId);

    /**
     * 功能：查询用户地址
     * @return
     */
    List<MallUserAddress> userAddress();

    /**
     * 功能：用户地址回显
     * @param id
     * @return
     */
    MallUserAddress address(Integer id);

    /**
     * 功能：编辑用户地址
     * @param address
     */
    void updateAddress(MallUserAddress address);

    /**
     * 功能：删除用户地址
     * @param id
     */
    void delAddress(Integer id);

    /**
     * 功能：添加用户地址
     * @param address
     */
    void addAddress(MallUserAddress address);

    /**
     * 功能：添加广告表
     * @param advertiseInfo
     */
    void addAdvertise(MallAdvertiseInfo advertiseInfo);

    /**
     * 功能：修改广告表
     * @param advertiseInfo
     */
    void updateAdvertise(MallAdvertiseInfo advertiseInfo);

    /**
     * 功能：删除广告
     * @param id
     */
    void delAdvertise(Integer id);

    /**
     * 功能：查询广告
     * @param id
     * @return
     */
    MallAdvertiseInfo selAdvertise(Integer id);

    /**
     * 功能：查询新品
     * @return
     */
    List<MallNewProduct> selNewProduct();

    /**
     * 功能：查询推荐商品
     * @return
     */
    List<MallNewProduct> selCommentProduct();

    /**
     * 功能：查询用户足迹表
     * @return
     */
    UserList list(Integer pageNum, Integer pageSize);

    /**
     * 功能：删除用户足迹
     */
    void delFootprint();

    /**
     * 功能：添加用户足迹
     * @param mallUserFootprint
     */
    void addFootprint(MallUserFootprint mallUserFootprint);

    /**
     * 功能：根据ID查询商品 和品牌
     * @param id
     * @return
     */
    ProductList selProductById(Integer id);

    /**
     * 功能：根据关键字查询商品
     * @return
     */
    MallList selProductList(String keywords,Integer pageNum,Integer pageSize);

    /**
     * 功能：查询用户关注表
     * @return
     */
    UserFollowList getUserFollow(Integer pageNum, Integer pageSize);

    /**
     * 功能：清空用户关注表
     */
    void clear();
}
